Saltar al contenido principal

Utilización

Para poder hacer uso de la función migration-mysql-to-store en el entorno de Google Cloud Platform, es necesario seguir los siguientes pasos:

  1. Desplegar la función migration-mysql-to-store del repositorio de GitLab como una nueva Cloud Function identificada como migratemysqltobigquery.

  2. Definir dentro del entorno de Google Cloud Tasks una nueva cola de tareas jobs-migration, la cual será la encargada de almacenar las tareas encoladas de migración de datos y posteriormente ejecutarlas en un proceso paralelo, donde cada tarea ejecutará la Cloud Function migration-task-processor para procesar los datos de manera incremental.

  3. Definir dentro de Cloud Scheduler un nuevo Job migrate-mysql-to-bigquery para que se ejecute cada día a las 02:00 AM (a modo de ejemplo). Será el encargado de publicar un mensaje en el topic Pub/Sub mysql-migration-to-bigquery a la hora programada, enviando el siguiente mensaje:

    mysql-migration-to-bigquery-topic

    {
    "years_to_migrate": 1,
    "months_to_migrate": 6,
    "source_tables": ["infracciones", "incidentesHistoricos"],
    "destination_tables": ["historico_infracciones", "historico_incidentes"],
    "tasks_enqueued_limit": 20,
    "filter_columns": ["fechaGPS", "fechaGPS"]
    }
  4. Crear dentro del entorno de Pub/Sub un nuevo Pub/Sub Topic o Tema definido como mysql-migration-to-bigquery, encargado de recibir el mensaje de migración de datos desde el Job. Posteriormente este topic Pub/Sub entrega ese mensaje a la Cloud Function migratemysqltobigquery, la cual se encuentra suscrita a dicho topic, procesando el mensaje y ejecutando la función migration-mysql-to-store desplegada desde el repositorio para encolar las tareas en base a los parámetros recibidos.

  5. La función migration-mysql-to-store recibe por parámetros el mensaje Pub/Sub, lo decodifica y comienza el proceso de generación de tareas en base a los valores recibidos. Estas tareas se almacenan en la cola de Cloud Tasks previamente definida, donde luego se ejecutarán en un proceso de procesamiento paralelo. Se puede visualizar el estado de cada tarea encolada en la consola de Cloud Tasks, además de poder visualizar los logs de la función migration-mysql-to-store en la consola de Cloud Functions.

    mysql-migration-to-bigquery-tasks mysql-migration-to-bigquery-logs

Flujo de Trabajo

En resumen, el flujo de trabajo completo consiste en:

  1. Desplegar la función migration-mysql-to-store como una nueva Cloud Function.
  2. Definir una nueva cola de tareas en Cloud Tasks para almacenar las tareas encoladas de migración de datos.
  3. Definir un Job en Cloud Scheduler para ejecutar la función migration-mysql-to-store cada día a las 02:00 AM.
  4. Definir un topic Pub/Sub para recibir el mensaje de migración de datos y publicarlo a la cola de Cloud Tasks.
  5. La función migration-mysql-to-store recibe el mensaje de Pub/Sub, lo decodifica y comienza el proceso de generación de tareas en base a los valores recibidos. Estas tareas se almacenan en la cola de Cloud Tasks previamente definida, donde luego se ejecutarán en un proceso de procesamiento paralelo.
  6. Se puede visualizar el estado de cada tarea encolada en la consola de Cloud Tasks, además de poder visualizar los logs de la función migration-mysql-to-store en la consola de Cloud Functions.